Software applications can be designed to execute independently, such as a game on a desktop computer. However, a software application can often provide greater functionality when it communicates with another software application. For example, a computer executing a web browser would be nearly worthless unless the browser were able to communicate over the Internet with a web server executing an application hosting a web site. The ability of the web browser to communicate with the web hosting application greatly increases the functionality of the web browser.
Unless an application is designed to operate independently, the application must have some method for communicating with another application. A web browser can communicate with a web hosting application because there is a standard protocol by which these two applications may communicate—hypertext transfer protocol (HTTP).
However, when the two software applications are specialized products, there is often no standard protocol available by which the applications can communicate. In such a case, one method by which applications can communicate is through use of an application programming interface (API). An API specifies the means by which services provided by one application can be used by another application. An API describes how to communicate with the application. In other words, an API is similar to an application's own personalized communication protocol.